package cn.xawl.gulimall.cart.vo;

import org.springframework.util.CollectionUtils;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author lh
 * @create 2020-11-02 12:42
 *
 * 用户购物车
 *
 **/
public class Cart {

    private List<CartItem> items;

    private Integer typeCount;  //购物车由多少种商品 items.size()

    private Integer totalCount; //所有商品的个数 （每种商品的数量相加）

    private BigDecimal totalPrice; //所有商品的总价格  （每种商品的单价 * 每种商品数量 相加）

    private BigDecimal reduce = new BigDecimal("0.00");

    public void setItems(List<CartItem> items) {
        this.items = items;
    }

    public void setReduce(BigDecimal reduce) {
        this.reduce = reduce;
    }

    public List<CartItem> getItems() {
        return items;
    }

    public Integer getTypeCount() {
        return CollectionUtils.isEmpty(items) ? 0 : items.size();
    }

    public Integer getTotalCount() {
        return CollectionUtils.isEmpty(items) ? 0 : items.stream().mapToInt(CartItem::getCount).sum();
    }

    public BigDecimal getTotalPrice() {
        BigDecimal total = new BigDecimal(0);
        if (!CollectionUtils.isEmpty(items)) {
            for (CartItem cartItem : items) {
                total = total.add(cartItem.getSubTotal());
            }
            return total.subtract(this.reduce);
        } else {
            return total;
        }
    }

    public BigDecimal getReduce() {
        return reduce;
    }
}
